iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
AI & Data

進擊的 n8n系列 第 27

Day 27:n8n 自動化實戰 - 用排程觸發器,每日早上九點自動寄送 Email 報表

  • 分享至 

  • xImage
  •  

前言

昨天我們學會了如何使用 Webhook 來處理即時的外部事件。但很多時候,我們需要的是在「特定時間」自動執行的任務,例如每日的數據同步、每週的報告生成,或是每月的帳單提醒。這時候,排程觸發器 (Schedule Trigger) 就是我們最好的朋友。

今天,我們將實作一個非常實用的辦公室自動化情境:「每日早上 9 點,自動抓取一份數據,並透過 Email 寄送報表給主管。」

為了簡化情境,我們的「數據」會先用固定的文字代替,重點在於展示整個排程與郵件發送的流程。

排程觸發器 (Schedule Trigger) 介紹

n8n 內建的 Schedule 觸發器 (在舊版中可能叫做 Cron),讓你可以像設定鬧鐘一樣,精確地控制工作流的執行時間。它支援多種模式:

  • Every Hour/Day/Week/Month: 簡單的固定間隔。
  • Custom (Cron Expression): 使用標準的 Cron 表達式,可以定義非常複雜的時間規則 (例如:每個上班日的下午 3:15)。

什麼是 Cron 表達式? Cron 表達式是一個由 5 或 6 個欄位組成的字串,用來定義時間排程。

  • 分別代表 分 時 日 月 星期。 例如:0 9 * * 1-5 就代表「每個星期一到星期五的早上 9:00」。
  • 可以參考這個線上轉換的網頁: https://crontab.guru/

實作流程

我們的目標是建立一個 n8n 工作流,它會:

  1. 設定排程在每天早上 9 點觸發
  2. (模擬)準備報表內容
  3. 透過 Email 節點將報表內容寄出

步驟 1:建立排程觸發器

  1. 建立一個新的 n8n Workflow(我們在 Day 25 實作過)。
  2. 系統預設的觸發器就是 Schedule。如果不是,可以手動新增 Schedule 節點。
    pic 1
  3. 在 Schedule 節點的設定中:
    • Trigger Interval: 選擇 Hours。
    • Hours Between Triggers: 設定為 9。
    • Minute: 設定為 0。
    • Timezone: 非常重要! 務必選擇你所在的時區,例如 Asia/Taipei,否則時間會不準確。
      pic 2

步驟 2:準備報表內容 (使用 Set 節點)

在真實世界,我們可能會先去串接資料庫或 API 來取得報表數據。今天我們先用 Set 節點來模擬這個過程。Set 節點的功能很單純,就是建立或修改工作流中的資料。

  1. 在 Schedule 節點後方點擊 +,新增一個 Set 節點。
  2. 在 Set 節點的設定中:
    • 點擊 Add Value。
    • Name: 輸入一個變數名稱,例如 reportContent。
    • Value: 輸入你想要寄送的報表內容。你可以使用 Markdown 語法來美化格式。

### 每日銷售摘要 (2025-10-27)

Hi Team,

以下是昨日的銷售數據:

**總訂單數**: 120

**總銷售額**: $35,000

**新註冊用戶**: 85

祝有美好的一天!

步驟 3:設定 Email 節點

最後,我們要將準備好的內容寄出去:

  1. 在 Set 節點後方點擊 +,新增 Send Email 節點。
  2. Credential: 第一次使用需要設定你的 Email 寄送服務。你可以選擇:
    • SMTP: 最通用的方式,適用於 Gmail, Outlook 等大多數郵件服務。你需要填寫 SMTP 主機、帳號、密碼 (注意:Gmail 可能需要使用「應用程式密碼」)。
    • SendGrid / Mailgun 等: 如果你有使用專業的 Email API 服務,可以直接選擇並填入 API Key。
  3. To: 填寫收件人的 Email 地址,例如 manager@example.com
  4. Subject: 郵件主旨,可以動態加入日期。我們用表達式:每日銷售報表 - {{ new Date().toLocaleDateString('zh-TW') }}。
  5. HTML: 勾選此項,這樣我們的 Markdown 內容才能被正確渲染成漂亮的格式。
  6. Text: 郵件內容。點擊 </> 圖示,從 Nodes > Set > Output Data > JSON 中,拖曳 reportContent 變數過來。它的值會是 {{ $json.reportContent }}。

以上步驟可以參考以下圖示(實際 Email 設定請根據你的實際環境來設定!):
pic 3
pic 4

步驟 4:測試與啟動

  1. 點擊 Send Email 節點的 Execute Node,n8n 會立即執行一次寄送。去收件夾檢查看看是否收到信,以及格式是否正確。
  2. 確認一切無誤後,點擊畫面右上角的 Active 開關,正式啟用工作流。

從現在開始,這個工作流就會像個忠實的員工,每天早上 9 點準時幫你把報表寄出去!

結語

排程觸發是自動化的基礎。學會了它,你就解鎖了無數的可能性:

  • 每日天氣預報提醒:串接天氣 API,每天早上出門前寄送提醒。
  • 每週備份資料庫:定時執行資料庫備份腳本。
  • 每月檢查網站狀態:定時爬取公司網站,確認所有頁面都正常運作。

明天,我們將更進一步,學習如何主動 串接外部 API,從 Google Calendar 抓取資料,並打造一個個人化的行程提醒工具!


上一篇
Day 26:n8n 自動化實戰 - Webhook 入門,輕鬆串接網頁表單與 Google Sheet
下一篇
Day 28:n8n 自動化實戰 - 串接 Google Calendar API,每日自動提醒今日行程
系列文
進擊的 n8n29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言